<!DOCTYPE html>
<html class="reftest-wait">
<title>
  In effect animations should effectively apply will-change (i.e. force a
  stacking context)
</title>
<link rel="help" href="https://drafts.csswg.org/web-animations-1/#side-effects-section">
<link rel="author" href="mailto:bokan@chromium.org">
<link rel="match" href="side-effects-of-animations-in-effect-ref.html">
<script src="/common/reftest-wait.js"></script>
<script src="../testcommon.js"></script>
<script src="resources/side-effects-common.js"></script>
<style>
  .testcase {
    position: relative;
    margin: 2px;
    border: 1px solid black;
    width: 250px;
    height: 25px;
  }
  .container {
    background-color: lightgrey;
    margin: 4px;
    display: flex;
    width: 600px;
    flex-direction: row;
    justify-content: flex-end;
    align-items: center;
  }
  .label {
    flex-grow: 1;
  }
  .target {
    width: 100%;
    height: 100%;
  }
  .absolutebox {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }
  .pass {
    background-color: limegreen;
  }
  .fail {
    background-color: red;
  }
</style>

<script>
onload = takeScreenshotOnAnimationsReady;
</script>

<!-- OPACITY -->

<!-- Is current - before phase playing forwards -->
<div class="container">
  <div class="label">Opacity - before phase</div>
  <div class="testcase" id="opacity-before">
    <div class="absolutebox fail"></div>
    <div class="target pass"></div>
  </div>
</div>
<script>
  setupAnimation('#opacity-before', STATE_IN_EFFECT, PROPERTY_OPACITY, PHASE_BEFORE);
</script>

<!-- Is current - in play-->
<div class="container">
  <div class="label">Opacity - active phase</div>
  <div class="testcase" id="opacity-active">
    <div class="absolutebox fail"></div>
    <div class="target pass"></div>
  </div>
</div>
<script>
  setupAnimation('#opacity-active', STATE_IN_EFFECT, PROPERTY_OPACITY, PHASE_ACTIVE);
</script>

<!-- Is current - after phase playing backwards-->
<div class="container">
  <div class="label">Opacity - after phase</div>
  <div class="testcase" id="opacity-after">
    <div class="absolutebox fail"></div>
    <div class="target pass"></div>
  </div>
</div>
<script>
  setupAnimation('#opacity-after', STATE_IN_EFFECT, PROPERTY_OPACITY, PHASE_AFTER);
</script>

<!-- TRANSFORM -->

<!-- Is current - before phase playing forwards -->
<div class="container">
  <div class="label">Transform - before phase</div>
  <div class="testcase" id="transform-before">
    <div class="absolutebox fail"></div>
    <div class="target pass"></div>
  </div>
</div>
<script>
  setupAnimation('#transform-before', STATE_IN_EFFECT, PROPERTY_TRANSFORM, PHASE_BEFORE);
</script>

<!-- Is current - in play-->
<div class="container">
  <div class="label">Transform - active phase</div>
  <div class="testcase" id="transform-active">
    <div class="absolutebox fail"></div>
    <div class="target pass"></div>
  </div>
</div>
<script>
  setupAnimation('#transform-active', STATE_IN_EFFECT, PROPERTY_TRANSFORM, PHASE_ACTIVE);
</script>

<!-- Is current - after phase playing backwards-->
<div class="container">
  <div class="label">Transform - after phase</div>
  <div class="testcase" id="transform-after">
    <div class="absolutebox fail"></div>
    <div class="target pass"></div>
  </div>
</div>
<script>
  setupAnimation('#transform-after', STATE_IN_EFFECT, PROPERTY_TRANSFORM, PHASE_AFTER);
</script>

<!-- BACKGROUND COLOR -->
<!--
  unlike opacity and transform, background color shouldn't create a stacking
  context.
-->

<!-- Is current - before phase playing forwards -->
<div class="container">
  <div class="label">Background-color - before phase</div>
  <div class="testcase" id="bgcolor-before">
    <div class="absolutebox pass"></div>
    <div class="target fail"></div>
  </div>
</div>
<script>
  setupAnimation('#bgcolor-before', STATE_IN_EFFECT, PROPERTY_BGCOLOR, PHASE_BEFORE);
</script>

<!-- Is current - in play-->
<div class="container">
  <div class="label">Background-color - active phase</div>
  <div class="testcase" id="bgcolor-active">
    <div class="absolutebox pass"></div>
    <div class="target fail"></div>
  </div>
</div>
<script>
  setupAnimation('#bgcolor-active', STATE_IN_EFFECT, PROPERTY_BGCOLOR, PHASE_ACTIVE);
</script>

<!-- Is current - after phase playing backwards-->
<div class="container">
  <div class="label">Background-color - after phase</div>
  <div class="testcase" id="bgcolor-after">
    <div class="absolutebox pass"></div>
    <div class="target fail"></div>
  </div>
</div>
<script>
  setupAnimation('#bgcolor-after', STATE_IN_EFFECT, PROPERTY_BGCOLOR, PHASE_AFTER);
</script>

</html>
